const request = require('request-promise');
const cheerio = require('cheerio');
// AIGC LLM 生成式内容
// tr 字符串要生成movie json对象
// input prompt 
const OpenAI = require('openai')
const client = new OpenAI({
    // 凭证 密钥  算力收费  token
    apiKey: 'sk-r4N8AJ6qidnIWrkqsilwlUMekVpKhoVJ3VEaz8Ss0LUUi7bH',
    baseURL: 'https://api.chatanywhere.tech/v1'
})
//入口文件
//异步的
//将豆瓣网页的电影列表html爬取
//返回JSON数组，每一电影项包含name，desc，score...
//单点入口
async function main(){
    // 代码 分步细化，程序员思维
    // 伪代码
    // 根据url 发送一个http请求 拿到html
    // 根据html 分析，拿到电影内容
    // 返回内容
    // await    LLM
    // 良好的编程规范
    const URL = "https://movie.douban.com/chart"
    // http 请求 html   408 基于请求
    const html = await request({
        url:URL
    })
    //console.log(html);

    
    // 有利于代码的可读性，可能比功能更重要
    // html分析   document + 选择器 cheerio满足
    // 编程素养 将html字符串加载到内存中（用命令行运行），$ = Document
    let $ = cheerio.load(html)
    // console.log($('.article table').length);
    // 严谨 
    const movieNodes = $('#content .article .item')
    let movie_html = ''
    for(let i = 0; i < 2;i++) {
        movie_html += cheerio.load(movieNodes[i]).html()
    }
    console.log(movie_html);
    let prompt = `
    ${movie_html}
    这是一段电影列表html,请获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber),
    请使用括号内的单词作为属性名,以JSON的格式返回。`

    const chatCompletion = await client.chat.completions.create({
        model:'gpt-3.5-turbo',//适合聊天的模型 很多种
        messages:[{
            role:'user',
            content:prompt
        }]
    })
    console.log(chatCompletion.choices);
//     const movieList = []
//     for (let i = 0; i < movieNodes.length;i++) {
//         // 封装
//         // 将一段电影的html解析 剥离出去
//         // 这段功能相对独立 可以复用
//         // main比较复杂了，一个函数超过10行代码，里面一定可以再分函数
//         movieList.push(getMovieInfo(movieNodes[i]));
//     }
//     console.log(movieList);
 }

const getMovieInfo = function(node){
    let movieInfo = {}
    // 将tr加载进内存
    let $$ = cheerio.load(node)
    let title = $$('.pl2 a').text()
    let pic = $$('.nbg img').attr('src')
    // console.log(pic);
    // console.log(title);
    let info = $$('p.pl').text()
    let rating_nums = $$('.rating_nums').text()

    movieInfo.title = title
    movieInfo.pic = pic
    movieInfo.info = info
    movieInfo.rating_nums = rating_nums

    return movieInfo
}

main()